// 格式化工具函数

import dayjs from 'dayjs';
import relativeTime from 'dayjs/plugin/relativeTime';
import 'dayjs/locale/zh-cn';

dayjs.extend(relativeTime);
dayjs.locale('zh-cn');

/**
 * 格式化时间戳为相对时间
 * @param timestamp 时间戳（毫秒）
 * @returns 相对时间字符串，如 "刚刚"、"5分钟前"、"2小时前"
 */
export const formatRelativeTime = (timestamp: number): string => {
  return dayjs(timestamp).fromNow();
};

/**
 * 格式化时间戳为标准日期时间
 * @param timestamp 时间戳（毫秒）
 * @param format 格式字符串，默认 'YYYY-MM-DD HH:mm:ss'
 * @returns 格式化后的日期时间字符串
 */
export const formatDateTime = (timestamp: number, format = 'YYYY-MM-DD HH:mm:ss'): string => {
  return dayjs(timestamp).format(format);
};

/**
 * 格式化时间戳为日期
 * @param timestamp 时间戳（毫秒）
 * @returns 格式化后的日期字符串，如 '2025-10-26'
 */
export const formatDate = (timestamp: number): string => {
  return dayjs(timestamp).format('YYYY-MM-DD');
};

/**
 * 格式化时间戳为时间
 * @param timestamp 时间戳（毫秒）
 * @returns 格式化后的时间字符串，如 '14:30'
 */
export const formatTime = (timestamp: number): string => {
  return dayjs(timestamp).format('HH:mm');
};

/**
 * 截断文本
 * @param text 原始文本
 * @param maxLength 最大长度
 * @param suffix 后缀，默认 '...'
 * @returns 截断后的文本
 */
export const truncateText = (text: string, maxLength: number, suffix = '...'): string => {
  if (text.length <= maxLength) return text;
  return text.slice(0, maxLength) + suffix;
};

/**
 * 生成唯一ID
 * @param prefix 前缀
 * @returns 唯一ID字符串
 */
export const generateId = (prefix = ''): string => {
  const timestamp = Date.now();
  const random = Math.random().toString(36).substring(2, 9);
  return prefix ? `${prefix}_${timestamp}_${random}` : `${timestamp}_${random}`;
};